package cn.levi.excel.validate;

import cn.levi.excel.module.StateBo;
import java.lang.reflect.Field;
import java.util.Map;
import java.util.Optional;

/**
 * excel导入校验
 * @author lei
 * @since 2024/9/19
 */
@FunctionalInterface
public interface ValidateExcelImport {


	/**
	 * 校验是否通过
	 *
	 * @param field 字段
	 * @param excellDataRow excel一行数据 ；
	 *                      其中key已经转还为bean属性 ；
	 *                      value为excel的原始数据且全为字符串类型，校验值时要注意
	 *
	 * @return
	 */
	StateBo validate(Field field, Map<String,Object> excellDataRow);


	/**
	 * 获取字段值
	 *
	 * @param field 字段
	 * @param excellDataRow excel一行数据
	 * @return
	 */
	default String getFieldValue(Field field, Map<String,Object> excellDataRow) {
		return Optional.ofNullable(excellDataRow.get(field.getName())).map(Object::toString).orElse(null);
	}

}
